package com.sinosoft.vaccinetoai.common.enmu;

import com.fasterxml.jackson.annotation.JsonCreator;

import java.util.Objects;

/**
 * @author xiazhihao
 * @ClassName: IBaseEnum
 * @ClassNameExplain:
 * @Description: 公共枚举 用于让子实现类便捷使用value等方法
 * @date 2023/12/27 14:38
 */
public interface IBaseEnum {


    Integer getCode();

    String getDesc();

    // 通用方法，根据 code 获取对应的枚举类型
    @JsonCreator
    static <T extends IBaseEnum> T valueOf(Class<T> enumClass, Integer code) {
        if (Objects.isNull(code)) {
            return null;
        }

        T[] enumConstants = enumClass.getEnumConstants();
        if (enumConstants != null && enumConstants.length > 0) {
            for (T enumConstant : enumConstants) {
                if (code.equals(enumConstant.getCode())) {
                    return enumConstant;
                }
            }
        }
        return null;
    }

}
